iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
1

前言

今天是鐵人的第22天,主要要來介紹股票和投資股票前的一些數學常識(從網路文章中擷取),今天程式的部分比較少,主要是講股票的觀念。接下來的幾個章節才會開始進入股票分析。

股票分析的過程

使用python來分析真實世界的財經資料

  1. 股票的資料:通常是csv檔案,在day6的時候有介紹檔案的部分
  2. 資料的分析:統計模型,day7~day14介紹資料的分析
  3. 視覺化資料:將資料轉換成圖表,day15~day19

股票市場

  • 初級市場:又稱「發行市場」,資金需求者(包括政府單位、金融機構及公民營企業)為籌集資金,出售有價證券給最初購買者之發行市場
  • 次級市場:又稱「流通市場」,是初級市場發行後之有價證券買賣的交易市場。我們平常所看到的股價與交易資訊大多來自次級市場

交易所

在台灣處理股票的單位叫做「台灣證券交易所」股份有限公司,成立為1961年10月3日。

  • 交易時間:星期一到星期五的 09:00 ~ 13:30。
    • 休假停市日除經過特別公告外,與金融業的例行假日相同
    • 台北市宣布停止上班上課時,則台灣証券交易所休市

市場概況

資料來源1
台灣證券交易所
證券櫃買賣中心 - 上櫃
證券櫃買賣中心 - 興櫃
公開發行公司 | 上市公司 | 上櫃公司 | 興櫃公司
------------- | -------------
數量 | 920 | 763 | 257
市值 | 285,972.81(億元) | 2,607,551(佰萬) | 510,665(佰萬)

股票的歷史資料

用套件抓取某個股票的歷史資料時,格式通常會如下

日期 最高價High 最低價Low 開盤價Open 收盤價Close 成交量Volume 調整後收盤價Adj Close
2015-01-05 140.5 137.5 140.5 139.5 32046000.0 121.474525

股票的價格取決於競標的形式。
開盤價:指的是9點開盤之前,把每一個股票買賣當量做統計所訂出的價格。
收盤價:股票收盤之前,把每一個股票買賣當量做統計所訂出的價格。
日報酬率:把前一天的收盤價和今天的收盤價做比較。

關於投資幾個數學常識

  1. 關於收益率
    假設你投資現金有10萬,第一個月收益100%,資金到達20萬,但第二個月損失50%,資金卻會跌回10萬
money = 10
first_month = 10*(1+1)
second_month = first_month*(1-0.5)
print('第一個月收益:',first_month)
print('第二個月收益:',second_month)
# 輸出結果
第一個月收益: 20
第二個月收益: 10.0

結論是虧損比賺錢容易

  1. 關於漲跌停
    假設你股票有10萬,有以下兩種情況
    (1). 第一天漲10%,第二天跌10%。
    (2). 第一天跌10%,第二天漲10%,不管是哪一種資金最後都是9.9萬。
money = 10
up_first_day = 10*(1+0.1)
up_second_day = up_first_day*(1-0.1)

down_first_day = 10*(1-0.1)
up_second_day = down_first_day*(1+0.1)
print('第一種股票餘額:',up_second_day)
print('第二種股票餘額:',up_second_day)
# 輸出結果
第一種股票餘額: 9.9
第二種股票餘額: 9.9

結論是漲跌不管前後餘額都一樣

  1. 關於波動性
    假設你股票有10萬,第一年賺40%,第二年賠20%,第三年賺30%,第四年賠20%,第五年賺50,第六年賠20%
import math as math
money = 10
six_year = 10*(1+0.4)*(1-0.2)*(1+0.3)*(1-0.2)*(1+0.5)*(1-0.2)
rate = math.pow((six_year/money),1/6)-1
print('六年後的資本額:',six_year, "   年報酬率:",rate)
# 輸出結果
六年後的資本額: 13.977600000000004    年報酬率: 0.05739868994194808

波動性大的股票,年報酬率有時候還會輸績優股

  1. 每天只賺1%
    假設你股票有50萬,每天只賺1%,一年會有250個交易日
money = 50
day = 250
print('一年的資本額:',math.pow(1+0.01,day) * money, "   二年的資本額:",math.pow(1+0.01,day*2) * money)
# 輸出結果
一年的資本額: 601.6077884148732    二年的資本額: 7238.638621628698

就算每次報酬只有1%,但只要穩定投資,也可以成長為大資本

  1. 投資組合
    假設你股票有100萬,投資以下組合 無風險資產A(每年5%),高風險資產B(每年-20%~40%),投資80萬到A,20萬到B
money = 100
big_risk = 20
print('最佳投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*(1+0.4)))
print('最差投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*(1-0.2)))
print('平均投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*0.5*(1-0.2) + (big_risk)*0.5*(1+0.4) ))
# 輸出結果
最佳投資: 112.0
最差投資: 100.0
平均投資: 106.0

最好的年報酬率可以到0.12,最差就攤平,這就是保本基金CPPI技術的雛形。

  1. 關於做空
    做空最大的收益率就是100%,前提是這支股票下市,但做多的收益率是沒有上限的,因此不要永遠的做空。除非你不相信人類社會會前進。

  2. 關於賭場贏利
    分析了澳門賭客1000個數據,發現勝率為0.53,輸的是0.47,但是如果加上人性去算,
    贏錢而離場的人平均贏利為0.34,但輸錢而離場的人卻虧損0.72,因此賭場並不需要做局來降低勝率,只要依靠人性的弱點就可以持續贏,股市亦如此。

0.53*0.34+0.47*(-0.72)
# 輸出結果
-0.15819999999999995

所以加上人性後來看,莊家還是賺錢的

從以上結論來看,所以為什麼要用程式交易,因為程式看的是數據,不會受心理因素影響。這也是筆者正在學習的,因為在寫這文章之前,筆者完全不懂Python,也不懂股票,更別說什麼數據分析的演算法,現在文章寫到20天,也只是了解Python基礎語法,和資料處理和圖形化,真正要進入股市分析也是一知半解,所以接下來的文章排版會更亂,都是用在網路上看到什麼內容在拿出來分享。

參考來源

(1) https://community.bigquant.com/t/%E9%87%8F%E5%8C%96%E5%B0%8F%E8%AF%BE%E5%A0%82-Finance%E7%B3%BB%E5%88%97%E7%AC%AC%E4%B8%80%E8%AE%B2-%E5%85%B3%E4%BA%8E%E6%8A%95%E8%B5%84%E7%9A%8410%E4%B8%AA%E6%95%B0%E5%AD%A6%E5%B8%B8%E8%AF%86/123

之前的章節


上一篇
[Day21]統計學基礎 - 隨機變數(Random Variable)
下一篇
[Day23]抓取股票 - twstock、pandas-datareader
系列文
python 入門到分析股市30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言